feat: edit bot CLI and model from dashboard#317
Conversation
|
功能挺好,能在 dashboard 直接改 bot 的 CLI / 模型,机制(写盘、wrapper 解析、单测)都没问题。只有一个实际问题想提醒一下 👇 问题:在 dashboard 切了 CLI 之后,那个 bot 已经在进行中的旧对话会被弄坏举个例子:某个群正在用 Claude 聊。管理员在 dashboard 把这个 bot 改成了 Codex。
为什么会这样启动 CLI 的那段代码( 顺带:提示文案「改动只影响下个新会话;运行中的会话需要 /restart 后才会换 CLI / 模型」其实和真实行为不符(闲置/重启后会自动换),建议改掉。 怎么修(建议)让每个会话在创建时把自己用的 CLI / wrapper / 模型记下来;恢复会话时优先用「这个会话自己记的 CLI」,而不是 bot 的最新设置。 代码里已经有现成的范式可照抄—— 如果这次 PR 不想动这么大,那至少做两件小事:
|
|
@deepcoldy 已按“旧会话保留旧 CLI / 模型,新会话使用新配置”的方向更新。 本次修订:
验证:
|
222ce54 to
dba3904
Compare
dba3904 to
82e7a3a
Compare
freeze 只在 !resume 时写入,且 resume 返回的 wrapperCli/model 不回退 botCfg。 导致本次修复前就存在的老会话(历史只盖过 cliId、没有 wrapperCli/model 字段) 升级后首次 resume 时丢掉 wrapper/model:ttadk/aiden/cjadk 这类带 wrapper 的 bot 会用裸 CLI 重启、丢网关鉴权起不来。 改为以 session.agentFrozen 标记 gate 一次性冻结(不再看 resume): - 全新会话与「老会话首次 resume」都会从 botCfg 用 ?? 回填仍缺失的字段并落盘; - 已冻结的会话原样信任 session 值,botCfg 后续改动绝不回溯影响; - 标记区分「老会话未冻结」与「冻结为无 wrapper」,无 wrapper 会话不会被 bot 后加的 wrapper 带跑。 补测:冻结会话 resume 忽略 botCfg 变更;老会话首次 resume 回填 wrapper/model。


Summary
Fixes #316
Test Plan
中文说明
改动概览
解决的问题
创建机器人后,原来 Dashboard 无法更改 bot 的 CLI 或模型。例如一个创建为 TraeX 的机器人,如果后续想改成 Claude、Codex 或 TTADK,只能手动改 bots.json 或重新创建机器人。这个 PR 把该能力放到 Bot Defaults 页面中,并确保 wrapper 与 model 一起保存,避免配置不一致。
测试计划